https://leetcode-cn.com/problems/sliding-window-maximum/

本题思路
自定义一个队列
并且使队列每次都是从大小排列
myque,front()返回的总是最大值

自定义队列使用头插尾插速度较快的deque双端数组
deque.back() 数组最后一个元素

那么
myque.push(int val)
如果插入的元素 比 末尾大，就一直尾删
知道小于=最后一个元素 或者栈空了
然后再尾插这个元素

和
myque.pop(int val)
如果队列不为空，并且val == myque.front();
才把头删除，
这样就能保证每次自定义队列里面的队头一定是最大的值了

class Solution {
public:
    class Myque{
    public:
        deque<int> que;
        void push(int val)
        {
            while(!que.empty() && val > que.back())
            {
                que.pop_back();
            }
            que.push_back(val);
        }

        void pop(int val)
        {
            if(!que.empty() && val == que.front())
            {
                que.pop_front();
            }
        }
        int front()
        {
            return que.front();
        }
    };
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        Myque que;
        vector<int> result;
        for(int i = 0 ; i < k ; i++)
        {
            que.push(nums[i]);
        }
        for(int i = k ; i < nums.size() ; i++)
        {         
            result.push_back(que.front());
            que.pop(nums[i - k]);
            que.push(nums[i]);
        }
        result.push_back(que.front());
        return result;
    }
};